package com.sven.sharedb.core.constants;

/**
 * 创建日期按量分片静态变量
 *
 * @author sven.wang
 * @version 2022/4/28 17:05
 */
public class ShardingConstants {

    /**
     * 表下划线分隔符
     */
    public static final String SPLIT_UNDERLINE = "_";

    /**
     * 表逗号分隔符
     */
    public static final String SPLIT_COMMA = ",";

    /**
     * 数据源与表分隔符
     */
    public static final String SPLIT_POINT = ".";

    /**
     * 数据库规则配置名称
     */
    public static final String RULE_CONFIG_NAME = "ds";

    /**
     * 分片表配置
     * <P/>
     * 分表节点
     */
    public static final String DB_SHARDING_TABLE_NODE = "sharding-table";

    /**
     * 分片表配置
     * <P/>
     * 参与分表的表名节点
     * 多个表逗号分割
     */
    public static final String DB_SHARDING_TABLES_NAME_NODE = "tables-name";

    /**
     * 分片表配置
     * <P/>
     * 表数据节点
     * 由数据源名 + 表名组成，以小数点分隔。
     * 多个表以逗号分隔，支持行表达式
     * 使用已知数据源与逻辑表名称生成数据节点，用于广播表或只分库不分表且所有库的表结构完全一致的情况
     */
    public static final String DB_SHARDING_TABLES_ACTUAL_DATA_NODES_NODE = "actual-data-nodes";

    /**
     * 分片表配置
     * <P/>
     * 分片策略节点
     */
    //public static final String DB_SHARDING_TABLES_SHARDING_STRATEGY_NODE = "sharding-strategy";

    /**
     * 分片表配置
     * <P/>
     * 分片列名称节点
     */
    public static final String DB_SHARDING_TABLES_SHARDING_COLUMN_NODE = "sharding-column";

    /**
     * 分片表配置
     * <P/>
     * 分片算法名称节点
     */
    public static final String DB_SHARDING_TABLES_SHARDING_ALGORITHM_NAME_NODE = "sharding-algorithm-name";

    /**
     * 分片表配置
     * <P/>
     * 绑定表规则列表节点
     */
    public static final String DB_SHARDING_TABLES_BINDING_TABLE_GROUPS_NODE = "binding-table-groups";

    /**
     * 分片表配置
     * <P/>
     * 分片算法节点
     */
    public static final String DB_SHARDING_TABLES_SHARDING_ALGORITHM_NODE = "sharding-algorithms";

    /**
     * 分片表配置
     * <P/>
     * 分片算法全部名称节点
     */
    public static final String DB_SHARDING_TABLES_SHARDING_ALGORITHM_NAMES_NODE = "sharding-algorithm-names";

    /**
     * 分片表配置
     * <P/>
     * 分片算法类型节点
     */
    public static final String DB_SHARDING_TABLES_SHARDING_ALGORITHM_TYPE_NODE = "sharding-algorithms-type";

    /**
     * 分片表配置
     * <P/>
     * 分片算法参数节点，jsonArrayList格式，例:[{"algorithm-expression":"sharding_order_wz{order_id % 2}"},{"allow-range-query-with-inline-sharding":"false"}]
     */
    public static final String DB_SHARDING_TABLES_SHARDING_ALGORITHM_PARAM_NODE = "sharding-algorithms-param";

    /**
     * 分片表配置
     * ebase日期冷热分离
     */
    public static final String CREATE_DATE_COLD_HEAT_SEPARATION = "createDateColdHeatSeparation";

    /**
     * 分片表配置
     * <P/>
     * 分片表热表范围
     */
    public static final String SHARDING_TABLE_SUFFIX = "history";

    /**
     * 表数据迁移
     * <P/>
     * 迁移标记前缀(前缀_迁移老表_迁移新表_开始时间_结束时间)
     */
    public static final String SHARDING_MOVE_TAG_REDIS_PRE = "SHARDING_MOVE_TAG_";

    /**
     * 表数据迁移
     * <P/>
     * 迁移检查前缀(前缀_迁移老表_迁移新表_开始时间_结束时间)
     */
    public static final String SHARDING_MOVE_CHECK_REDIS_PRE = "SHARDING_MOVE_CHECK_";

    /**
     * 表数据迁移
     * <P/>
     * 迁移再次检查前缀(前缀_迁移老表_迁移新表_开始时间_结束时间)
     */
    public static final String SHARDING_MOVE_CHECK_AGAIN_REDIS_PRE = "SHARDING_MOVE_CHECK_AGAIN_";

    /**
     * 创建日期冷热分片表字段
     */
    public static final String DB_SHARDING_TABLES_COLUMN = "create_date";

    /**
     * 创建日期冷热分片表字段
     */
    public static final String DB_SHARDING_TABLES_COLUMN_EXAMPLE = "createDate";

    /**
     * 分表数据量默认阈值:300W
     */
    public static final Integer DB_SHARDING_TABLES_COUNT_THRESHOLD_DEFAULT = 3000000;

    /**
     * 分表数据量默认时间:000000(对应00:00:00)
     */
    public static final String DB_SHARDING_TABLES_COUNT_TIME_DEFAULT = "000000";

    /**
     * 主表默认开始区间:1900年1月1日
     */
    public static final String DB_SHARDING_TABLES_MAIN_DEFAULT_BEGIN = "19000101000000";

    /**
     * 主表默认结束区间:2999年12月31日
     */
    public static final String DB_SHARDING_TABLES_MAIN_DEFAULT_END = "29991231125959";
}
